package com.yike.user.param;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yike.common.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 店铺 详情信息表
 *
 * @author Sakura
 * @since 2024-08-23
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "店铺详情信息")
public class ShopDetailsParam implements Serializable {

    private static final long serialVersionUID = -4203906568615744000L;

    @ApiModelProperty("商户id")
    private String merchantId;

    @ApiModelProperty(value = "商户邮箱", required = true)
    @NotBlank(message = "商户邮箱不能为空")
    private String email;                   // 商户邮箱

    @ApiModelProperty(value = "业务类型 BPOS-传统POS ,ZPOS-电签POS , ZPOS4G-电签POS4G , SUPER_POS-智能pos ,  B_WIZARD-传统语音大POS等，详情看拉卡拉文档", required = true)
    @NotBlank(message = "业务类型不能为空")
    private String busiCode;  // 业务类型  BPOS-传统POS ,ZPOS-电签POS , ZPOS4G-电签POS4G , SUPER_POS-智能pos ,  B_WIZARD-传统语音大POS等，详情看拉卡拉文档

    @ApiModelProperty(value = "商户注册名称", required = true)
    @NotBlank(message = "商户注册名称不能为空")
    private String merRegName;             // 商户注册名称

    @ApiModelProperty(value = "商户注册类型 TP_MERCHANT-企业，TP_PERSONAL-⼩微个⼈", required = true)
    @NotBlank(message = "商户注册类型不能为空")
    private String merType;                 // 商户注册类型 TP_MERCHANT-企业，TP_PERSONAL-⼩微个⼈

    @ApiModelProperty(value = "商户名称(经营名称)", required = true)
    @NotBlank(message = "商户名称(经营名称)不能为空")
    private String merName;                 // 商户名称(经营名称)

    // 联系人信息
    @ApiModelProperty(value = "商户联系人手机号码", required = true)
    private String contactMobile;           // 商户联系人手机号码

    @ApiModelProperty(value = "商户联系人姓名", required = true)
    private String contactName;             // 商户联系人姓名


    @ApiModelProperty(value = "商户经营内容", required = true)
    @NotBlank(message = "商户经营内容不能为空")
    private String businessContent;         // 商户经营内容



    @ApiModelProperty(value = "营业执照名称 ", required = false)
    private String licenseName;             // 营业执照名称

    @ApiModelProperty(value = "营业执照号码 ⼩微商户可不传， 其他必传，", required = true)
    private String licenseNo;               // 营业执照号码

    @ApiModelProperty(value = "营业执照开始时间 ⼩微商户可不传， 其他必传，", required = true)
    @JSONField(format = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date licenseDtStart;          // 营业执照开始时间 yyyy-MM-dd

    @ApiModelProperty(value = "营业执照过期时间 ⼩微商户可不传， 其他必传，", required = true)
    @JSONField(format = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date licenseDtEnd;            // 营业执照过期时间 yyyy-MM-dd




    // 法人信息

    @ApiModelProperty(value = "法人信息-是否法人进件 不传默认法人", required = false)
    private Boolean isLegalPerson;          // 是否法人进件

    @ApiModelProperty(value = "法人姓名", required = true)
    @NotBlank(message = "法人姓名不能为空")
    private String larName;                 // 法人姓名

    @ApiModelProperty(value = "法人证件类型 01 身份证 ，02 护照，03 港澳通行证，04 台胞证，10 外国人永久居留身份证，11 港妨澳居民居住证，12 台湾居民居住证，13 执行事务合伙人，99 其它证件", required = true)
    @NotBlank(message = "法人证件类型不能为空")
    private String larIdType;               // 法人证件类型 01 身份证 ，02 护照，03 港澳通行证，04 台胞证，10 外国人永久居留身份证，11 港妨澳居民居住证，12 台湾居民居住证，13 执行事务合伙人，99 其它证件

    @ApiModelProperty(value = "法人证件号码", required = true)
    @NotBlank(message = "法人证件号码不能为空")
    private String larIdCard;               // 法人证件号码

    @ApiModelProperty(value = "法人证件开始日期", required = true)
    @NotBlank(message = "法人证件开始日期不能为空")
    @JSONField(format = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date larIdCardStart;          // 法人证件开始日期 yyyy-MM-dd

    @ApiModelProperty(value = "法人证件过期时间", required = true)
    @NotBlank(message = "法人证件过期时间不能为空")
    @JSONField(format = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date larIdCardEnd;            // 法人证件过期时间 yyyy-MM-dd


    // 结算信息
    @ApiModelProperty(value = "结算账户开户行号", required = true)
    @NotBlank(message = "结算账户开户行号不能为空")
    private String openningBankCode;        // 结算账户开户行号

    @ApiModelProperty(value = "结算账户开户行名称", required = true)
    @NotBlank(message = "结算账户开户行名称不能为空")
    private String openningBankName;        // 结算账户开户行名称

    @ApiModelProperty(value = "结算账户清算行号", required = true)
    @NotBlank(message = "结算账户清算行号不能为空")
    private String clearingBankCode;        // 结算账户清算行号

    @ApiModelProperty(value = "结算信息省份代码", required = true)
    @NotBlank(message = "结算信息省份代码不能为空")
    private String settleProvinceCode;      // 结算信息省份代码

    @ApiModelProperty(value = "结算信息省份名称", required = true)
    @NotBlank(message = "结算信息省份名称不能为空")
    private String settleProvinceName;      // 结算信息省份名称

    @ApiModelProperty(value = "结算信息城市代码", required = true)
    @NotBlank(message = "结算信息城市代码不能为空")
    private String settleCityCode;          // 结算信息城市代码

    @ApiModelProperty(value = "结算信息城市名称", required = true)
    @NotBlank(message = "结算信息城市名称不能为空")
    private String settleCityName;          // 结算信息城市名称

    @ApiModelProperty(value = "结算人银行卡号", required = true)
    @NotBlank(message = "结算人银行卡号不能为空")
    private String accountNo;               // 结算人银行卡号

    @ApiModelProperty(value = "结算人账户名称", required = true)
    @NotBlank(message = "结算人账户名称不能为空")
    private String accountName;             // 结算人账户名称

    @ApiModelProperty(value = "结算账户类型 57对公/58对私", required = true)
    @NotBlank(message = "结算账户类型不能为空")
    private String accountType;             // 结算账户类型 57对公/58对私

    @ApiModelProperty(value = "结算人证件类型", required = false)
    private String accountIdType;          // 结算人证件类型

    @ApiModelProperty(value = "结算人证件号码", required = true)
    @NotBlank(message = "结算人证件号码不能为空")
    private String accountIdCard;           // 结算人证件号码

    @ApiModelProperty(value = "结算人证件开始时间", required = true)
    @NotBlank(message = "结算人证件开始时间不能为空")
    @JSONField(format = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date accountIdDtStart;        // 结算人证件开始时间

    @ApiModelProperty(value = "结算人证件过期时间", required = true)
    @NotBlank(message = "结算人证件过期时间不能为空")

    private Date accountIdDtEnd;          // 结算人证件过期时间

    @ApiModelProperty(value = "外部编号", required = false)
    private String externalNo;              // 外部编号

    @ApiModelProperty(value = "结算类型 DO/D1", required = true)
    @NotBlank(message = "结算类型不能为空")
    private String settleType;              // 结算类型 DO/D1

    @ApiModelProperty(value = "结算方式 MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算到银行卡,REGULAR:定时结算（仅企业商户支持）", required = true)
    @NotBlank(message = "结算方式不能为空")
    private String settlementType;          // 结算方式 MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算到银行卡,REGULAR:定时结算（仅企业商户支持）

    @ApiModelProperty(value = "定时结算时间 HH:mm 定时结算必传 格式为 HHmm 例如结算时间为下午3点 传入值为 1500", required = true)
    private Integer regularSettlementTime;  // 定时结算时间 HHmm

    @ApiModelProperty(value = "电子合同编号", required = false)
    private String contractNo; // 电子合同编号

    @ApiModelProperty(value = "业务拓展信息", required = true)
    private ShopExpandParam shopExpandParam;

    @ApiModelProperty(value = "进件来源 APP/H5", required = true)
    @NotBlank(message = "进件来源不能为空")
    private String source;                  // 进件来源 APP/H5

}
